<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组</title>
</head>
<body>
    <script type="text/javascript">
<!--        -->
//        // 数组可以存放多个数据类型的变量，长度随时改变，类似于Java中的容器
//        var arr = [1,2,3,4,"healthy",true];
//        alert("数组长度为："+arr.length);
//        arr.length = 5;
//        // 这里，默认调用了toString方法
//        alert("现在的数组为："+arr);


        // // pop和push方法
        // // push方法，向数组中追加（一个或者多个）元素，返回值为数组的长度
        // var arr1 = [];
        // var arr1_length = arr1.push(1,2,true,new Date());
        // alert("数组的长度为(这里是push方法的返回值)"+arr1_length);
        // alert("数组的长度为"+arr1.length)
        // alert("现在的数组为："+arr1);
        //
        // pop方法，删除元素，并返回删除的元素，没有参数
        // // 从数组的尾部移除一个元素
        // var arr1_remove = arr1.pop();
        // alert("移除的元素为："+arr1_remove)


        // // shift 和unshift方法
        // var arr2 = [1,2,3,4,true,new Date()];
        // // 从头部移除一个元素
        // var arr2_remove = arr2.shift();
        // alert("移除的元素是："+arr2_remove)
        // alert("添加的元素之前，数组长度为："+arr2.length)
        // // 从数组的头部开始添加元素，返回值为新数组的长度
        // var arr2_add = arr2.unshift("healthy",'wmf');
        // alert("添加的元素之后，数组长度为："+arr2_add)

        // splice方法，表示截取方法。操作数组本身
        // splice的第一个参数表示截取的位置，也就是数组的索引，
        // 第二个参数表示截取的长度，从三个参数开始，就是要在截取的位置之后添加的元素
        // var arr3 = [1,2,3,4,5];
        // arr3.splice(1,2,3,4,5);
        // alert("arr3为："+arr3) //1,3,4,5,4,5

        // slice方法，不操作数组本身，表示截取的范围（左闭右开），返回的是截取的元素
        // var arr4 = [1,2,3,4,5];
        // var result = arr4.slice(2,4);//表示截取3,4两个元素
        // alert("截取的元素为："+result)
        // alert("剩余的元素为："+arr4)//这里返回的数组没有变化，因为这个函数不操作数组本身


        // // concat,合并、粘连的方法，不操作数组本身
        // var arr5 = [1,2,3];
        // var arr6 = [true,new Date()];
        // var arr_56 = arr5.concat(arr6);
        // alert("合并后的数组："+arr_56);

        // join方法，在每个元素后面加上，
//arr.join()如果没有传值，默认逗号隔开
//arr.join("")如果传了空字符串，默认是没有分隔符的，连在一起的
//          不操作数组本身，也就是数组本身没有变化
//          将数组按照指定的分隔符，分割成字符串
        // var arr7 = [1,2,3];
        // var arr8 = ['-']
        // var arr_78 = arr7.join(arr8);
        // alert("合并后的数组："+arr_78);

        // sort正序排序，操作数组本身
        var arr9 = [2,4,1,6,8];
        var arr10 = [3,5,7,1,9,10];

        // sort（function）这个方法里面的参数是可选的，里面必须是个函数
        // sort方法，是将每个元素都看成字符串，通过比较字符串的第一个元素就来判断大小
        // alert("正序排序后的数组："+arr9.sort())  //正序排序，1,2,4,6,8
        // alert("正序排序后的数组："+arr9.reverse()) //倒序排序，8,6,1,4,2按照集合的位置进行排序，不是按照元素大小
        // alert("正序排序后的数组："+arr10.sort()) // 1,10,3,5,7,9
        // alert("正序排序后的数组："+arr10.sort()) // 1,10,3,5,7,9

        // 要想实现正常的正序和倒序排序，需要往这两个方法里面添加其他方法
        function conpare_sort(value1,value2) {
            if(value1<value2){
                return -1;
            }else if(value1>value2){
                return 1;
            }else{
                return 0;
            }
        }
        function max(a,b){
            return a-b;//按照从小到大的顺序
            // b-a的话，按照从大到小的顺序
        }
        arr10.sort(max);

        alert("改变后正序排序后的数组："+arr10.sort(conpare_sort))

        function conpare_reverse(value1,value2) {
            if(value1<value2){
                return 1;
            }else if(value1>value2){
                return -1;
            }else{
                return 0;
            }
        }
        alert("改变后正序排序后的数组："+arr10.reverse(conpare_reverse))

    </script>
</body>
</html>